home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 5: The Fifth Dimension / 17 Bit - The Fifth Dimension (1995)(17 Bit Software)[!].iso / files / 3728.dms / 3728.adf / XPKDisk / xpkdisk.h < prev    next >
C/C++ Source or Header  |  1995-04-08  |  5KB  |  194 lines

  1. /*-
  2.  * XPKDISK.H
  3.  *
  4.  * $Id: xpkdisk.h,v 1.6 1995/04/08 20:23:48 Rhialto Exp $
  5.  * $Log: xpkdisk.h,v $
  6.  * Revision 1.6  1995/04/08  20:23:48  Rhialto
  7.  * Add/correct version strings.
  8.  *
  9.  * Revision 1.5  1995/04/02  14:58:51  Rhialto
  10.  * Increase stack of device's Process to 8K.
  11.  * Introduce #define for length of trackfile name.
  12.  *
  13.  * Revision 1.4  1993/12/29  17:52:19  Rhialto
  14.  * Creating the ripcord file was not done right.
  15.  *
  16.  * Revision 1.3  1993/11/08  13:11:15  Rhialto
  17.  * Add RCS tags.
  18.  *
  19.  *
  20.  * This code is (C) Copyright 1989-1993 by Olaf Seibert. All rights reserved.
  21.  * May not be used or copied without a licence.
  22. -*/
  23.  
  24. #ifndef EXEC_MEMORY_H
  25. #include <exec/memory.h>
  26. #endif
  27. #ifndef EXEC_DEVICES_H
  28. #include <exec/devices.h>
  29. #endif
  30. #ifndef EXEC_ERRORS_H
  31. #include "exec/errors.h"
  32. #endif
  33. #ifndef EXEC_SEMAPHORES_H
  34. #include "exec/semaphores.h"
  35. #endif
  36. #ifndef DEVICES_TRACKDISK_H
  37. #include <devices/trackdisk.h>
  38. #endif
  39. #ifndef LIBRARIES_DOSEXTENS_H
  40. #include <libraries/dosextens.h>
  41. #endif
  42. #ifndef CLIB_EXEC_PROTOS_H
  43. #include <clib/exec_protos.h>
  44. #endif
  45. #ifndef CLIB_ALIB_PROTOS_H
  46. #include <clib/alib_protos.h>
  47. #endif
  48. #ifndef CLIB_DOS_PROTOS_H
  49. #include <clib/dos_protos.h>
  50. #endif
  51.  
  52. extern struct ExecBase *SysBase;
  53.  
  54. #define XD_NUMUNITS    8
  55. #define XD_BPS        512
  56. #define XD_SPT        64        /* default value */
  57. #define XD_TRACKLEN    (XD_BPS * XD_SPT)
  58.  
  59. #define VERSION     SYS2_04
  60. #define REVISION    8
  61.  
  62. typedef unsigned char    byte;
  63. typedef unsigned short    ushort;
  64. typedef unsigned long    ulong;
  65.  
  66. struct XpkDiskDevice {
  67.     struct Device   xd_Dev;
  68.     long        xd_Seglist;
  69.     struct XpkDiskUnit *xd_Unit[XD_NUMUNITS-1];
  70. };
  71.  
  72. #define dev_Node    xd_Dev.dd_Library.lib_Node
  73. #define dev_Flags    xd_Dev.dd_Library.lib_Flags
  74. #define dev_NegSize    xd_Dev.dd_Library.lib_NegSize
  75. #define dev_PosSize    xd_Dev.dd_Library.lib_PosSize
  76. #define dev_Version    xd_Dev.dd_Library.lib_Version
  77. #define dev_Revision    xd_Dev.dd_Library.lib_Revision
  78. #define dev_IdString    xd_Dev.dd_Library.lib_IdString
  79. #define dev_OpenCnt    xd_Dev.dd_Library.lib_OpenCnt
  80.  
  81. struct Cache {
  82.     struct MinList  LRUList;
  83. };
  84.  
  85. struct XpkDiskUnit {
  86.     struct MsgPort  xu_Port;
  87.  
  88.     /* User configurable parameters first */
  89.     short        xu_MaxCache;
  90.     ushort        xu_CacheFlags;
  91.     short        xu_CacheTimeout;
  92.     char        xu_XPKPackMethod[10];   /* "XXXX.100" */
  93.  
  94.     short        xu_OpenCnt;
  95.     short        xu_UnitNr;
  96.     ushort        xu_Flags;
  97.     struct Cache    xu_Cache;
  98.     short        xu_CurrentCache;
  99.     ushort        xu_CacheDirty;
  100.     short        xu_TimeoutCounter;
  101.     int         xu_NumTracks;    /* a guess */
  102.     int         xu_TrackLen;
  103.     struct MinList  xu_ChangeIntList;
  104.     struct MsgPort  xu_TimerPort;
  105.     struct timerequest xu_TimeReq;
  106.     int         xu_RipcordBlocks;
  107.     char        xu_WriteErr;    /* was there a write problem? */
  108.     char        xu_ReadOnly;
  109. };
  110.  
  111. #define     TDERR_NoError   0
  112.  
  113. #define UNITB_ACTIVE    0
  114. #define UNITF_STOPPED    (1<<2)
  115. #define UNITF_WAKETASK    (1<<3)
  116.  
  117. #define CACHE_TIMEOUT        5
  118. #define MAX_CACHE        8
  119. #define PACKING_METHOD        "BLZW.100"
  120.  
  121. #define CACHEF_CMDUPDATE    0x0001
  122. #define CACHEF_DELAY        0x0002
  123. #define CACHEF_SAFEWRITE    0x0004
  124.  
  125. #define CACHEF_GOTCMDUPD    0x0100
  126. #define CACHEF_GOTTIMEOUT   0x0200
  127. #define CACHEF_LICENSED     0x8000
  128.  
  129. #define CACHE_FLAGS        (CACHEF_CMDUPDATE | CACHEF_DELAY | CACHEF_SAFEWRITE)
  130.  
  131. #define XPKDISKDIR        "XPKD:"
  132.  
  133. /* Names of configuration parameters, as seen by the user */
  134. #define CONFIGFILE        "ENV:XpkDisk%x.prefs"
  135. #define CONFIGFILE_ARC        XPKDISKDIR "XpkDisk%x.prefs"
  136.  
  137. #define TRACKNAME_LENGTH    40
  138.  
  139. #define S_CMDUPDATE        "CMDUPDATE"
  140. #define S_DELAY         "DELAY"
  141. #define S_SAFEWRITE        "SAFE"
  142. #define S_LICENSED        "LICENSED"
  143. #define S_MaxCache        "CACHE"
  144. #define S_CacheTimeout        "TIME"
  145. #define S_XPKPackMethod     "METHOD"
  146.  
  147.  
  148. #define SYS1_2        33    /* System version 1.2 */
  149. #define SYS1_3        34    /* System version 1.3 */
  150. #define SYS2_0        36    /* System version 2.0 */
  151. #define SYS2_04     37    /* System version 2.04 */
  152.  
  153. typedef struct XpkDiskDevice DEV;
  154. typedef struct XpkDiskUnit   UNIT;
  155.  
  156.  
  157. #define TASKPRI     0L
  158. #define TASKSTACK   8192L
  159.  
  160. #define STRIP(cmd)  ((unsigned char)cmd)
  161. #define IMMEDIATE   ((1<<CMD_INVALID)|\
  162.              (1<<CMD_STOP)|(1<<CMD_START)|(1<<CMD_FLUSH)|\
  163.              (1L<<TD_ADDCHANGEINT)|\
  164.              (1L<<TD_REMOVE)|(1L<<TD_RAWREAD)|(1L<<TD_RAWWRITE)|\
  165.              (1L<<TD_GETDRIVETYPE)|(1L<<TD_EJECT)|\
  166.              (1L<<TD_SEEK)|(1L<<TD_CHANGENUM)|(1L<<TD_CHANGESTATE)|\
  167.              (1L<<TD_PROTSTATUS))
  168. #define PerformIO(ioreq, unit) \
  169.             (funcTable[STRIP(ioreq->io_Command)])(ioreq, unit)
  170.  
  171. #define TD_Remove    CMD_Invalid
  172. #define TD_Rawread    CMD_Invalid
  173. #define TD_Rawwrite    CMD_Invalid
  174. #define TD_Getdrivetype CMD_Invalid
  175. #define TD_Eject    CMD_Invalid
  176.  
  177. #define TD_Seek     TD_Return0
  178. #define TD_Changenum    TD_Return0
  179. #define TD_Changestate    TD_Return0
  180.  
  181. #define CMD_Die     0xDEAD
  182.  
  183. #define Prototype extern
  184. #define Local      static
  185.  
  186. #define STR(s)    STR2(s)
  187. #define STR2(s)    #s
  188.  
  189. /*
  190.  *  Prototypes:
  191.  */
  192.  
  193. #include "proto.h"
  194.